home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2005 October
/
PCWOCT05.iso
/
Software
/
FromTheMag
/
Ant Movie Catalog 3.5.0.2
/
amc_install.exe
/
{app}
/
Scripts
/
labutaca.net (ES).ifs
< prev
next >
Wrap
Text File
|
2005-03-13
|
8KB
|
296 lines
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=micmic
Title=labutaca.net
Description=labutaca.net+Google
Site=www.labutaca.net
Language=ES
Version=1.5
Requires=3.5.0
Comments= Author : micmic (<link>micmic@dieznet.com</link>) |BetaTester: Macoco (gracias)
License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. |
GetInfo=1
[Options]
***************************************************)
program labutacaImport;
var
MovieName: string;
const
Dominio = 'www.labutaca.net';
BaseURL1 = 'http://www.google.com/custom?hl=es&ie=ISO-8859-1&cof=&domains=';
BaseURL2 = '&q=';
BaseURL3 = '&btnG=B%FAsqueda+en+Google&sitesearch=';
function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
var
i: Integer;
begin
result := -1;
if StartAt < 0 then
StartAt := 0;
for i := StartAt to List.Count-1 do
if Pos(Pattern, List.GetString(i)) <> 0 then
begin
result := i;
Break;
end;
end;
function EliminaInicio(S: string; CR: string): string;
begin
result := S;
while Pos(CR, result) = 1 do
begin
Delete(result, 1, Length(CR));
end;
end;
function SustitucionReiterada(S: string; Buscado: string; Sustituto: string): string;
var
InicioPos: Integer;
Longitud: Integer;
TextoAntes: string;
TextoDespues : string;
begin
result := S;
Longitud := Length(Buscado);
InicioPos := Pos(Buscado, result);
while InicioPos > 0 do
begin
TextoAntes := copy(result, 1, InicioPos);
TextoDespues := copy(result, (InicioPos + Longitud), Length(result));
result := TextoAntes + TextoDespues;
InicioPos := Pos(Buscado, result);
end;
end;
function CadenaEntre(var S: string; StartTag: string; EndTag: string): string;
var
InicioPos: Integer;
S_Aux: string;
begin
S_Aux := S;
InicioPos := Pos(StartTag, S_Aux);
Delete(S_Aux, 1, InicioPos + Length(StartTag) - 1);
InicioPos := Pos(EndTag, S_Aux);
result := copy(S_Aux, 1, InicioPos - 1);
Delete(S_Aux, 1, InicioPos + 1);
end;
procedure AnalyzePage(Address: string);
var
Page: TStringList;
LineNr: Integer;
PosIni, PosFin: Integer;
Line, SubLine: string;
Title, DirURL: string;
txtTemp: string;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
if Pos('No se encontr≤ ninguna pßgina', Page.Text) > 0 then
begin
ShowMessage('No se ha encontrado ning·n artφculo por tφtulo.');
end else
begin
PickTreeClear;
PickTreeAdd('Resultados de la b·squeda para "' + MovieName + '" (' + Dominio + ') por Google:', '');
Page.Text := StringReplace(Page.Text, '<br>', #13#10);
Page.Text := StringReplace(Page.Text, '<p class=g>', #13#10 + '<p class=g>');
// buscamos los resultados
LineNr := 0;
while LineNr < Page.Count do
begin
SubLine := Page.GetString(LineNr);
txtTemp := '<p class=g><a href=';
PosIni := pos(txtTemp, SubLine);
if PosIni > 0 then
begin
SubLine := Copy(SubLine, PosIni + Length(txtTemp), Length(SubLine));
txtTemp := '>';
PosFin := pos(txtTemp, SubLine);
DirURL := Copy(SubLine, 1, PosFin - 1);
DirURL := StringReplace(DirURL, '"', '');
SubLine := Copy(SubLine, PosFin + Length(txtTemp), Length(SubLine));
txtTemp := '</a>';
PosFin := pos(txtTemp, SubLine);
Title := Copy(SubLine, 1, PosFin - 1);
HTMLRemoveTags(Title);
//ShowMessage(Title + '-->' + DirURL);
PickTreeAdd(Title, DirURL);
end;
LineNr := LineNr + 1;
end;
Page.Free;
if PickTreeExec(Address) then
AnalyzeMoviePage(Address);
end;
end;
procedure AnalyzeMoviePage(Address: string);
var
MoviePage: TStringList;
LineNr: Integer;
posIni: Integer;
LineImg: string;
Line: string;
valor: string;
txttemp: string;
begin
Line := '';
LineImg := '';
SetField(fieldURL, Address);
MoviePage := TStringList.Create;
MoviePage.Text := GetPage(Address);
LineNr := FindLine('<title>', MoviePage, 0);
Line := MoviePage.GetString(LineNr);
Line := CadenaEntre(Line, '<title>LA BUTACA - ', '</title>');
SetField(fieldTranslatedTitle, Line);
// eliminamos caracteres de saltos de lφnea y tabulaciones
// luego eliminamos blancos consecutivos
MoviePage.Text := StringReplace(MoviePage.Text, #13#10, ' ');
MoviePage.Text := StringReplace(MoviePage.Text, #9, ' ');
MoviePage.Text := SustitucionReiterada(MoviePage.Text, ' ', ' ');
Line := MoviePage.Text;
txttemp := 'Ampliar cartel';
if pos(txttemp, Line) <= 0 then
begin
txttemp := 'Direcci≤n';
end
if pos(txttemp, Line) > 0 then
begin
LineImg := CadenaEntre(Line, '<body>', txttemp);
Line := CadenaEntre(Line, txttemp, '</body>');
end
txttemp := 'Direcci≤n:';
if pos(txttemp, Line) <= 0 then
begin
txttemp := 'Direcci≤n y gui≤n:';
end
if pos(txttemp, Line) > 0 then
begin
valor := CadenaEntre(Line, txttemp, '<br>');
HTMLRemoveTags(valor);
SetField(fieldDirector, Trim(valor));
end
txttemp := 'Paφs:';
if pos(txttemp, Line) <= 0 then
begin
txttemp := 'Paφses:';
end
if pos(txttemp, Line) > 0 then
begin
valor := CadenaEntre(Line, txttemp, '<br>');
HTMLRemoveTags(valor);
SetField(fieldCountry, Trim(valor));
end
txttemp := 'A±o:';
if pos(txttemp, Line) > 0 then
begin
valor := CadenaEntre(Line, txttemp, '<br>');
HTMLRemoveTags(valor);
SetField(fieldYear, Trim(StringReplace(valor, '.', '')));
end
txttemp := 'Duraci≤n:';
if pos(txttemp, Line) > 0 then
begin
valor := CadenaEntre(Line, txttemp, ' min');
HTMLRemoveTags(valor);
SetField(fieldLength, Trim(valor));
end
txttemp := 'Interpretaci≤n:';
if pos(txttemp, Line) > 0 then
begin
valor := CadenaEntre(Line, txttemp, '<br>');
HTMLRemoveTags(valor);
SetField(fieldActors, Trim(valor));
end
txttemp := 'Producci≤n:';
if pos(txttemp, Line) > 0 then
begin
valor := CadenaEntre(Line, txttemp, '<br>');
HTMLRemoveTags(valor);
SetField(fieldProducer, Trim(valor));
end
txttemp := 'M·sica:';
if pos(txttemp, Line) > 0 then
begin
valor := txttemp + CadenaEntre(Line, txttemp, '<strong>SINOPSIS');
valor := StringReplace(valor, '<br>', #13#10);
HTMLRemoveTags(valor);
SetField(fieldComments, Trim(valor));
end
txttemp := 'SINOPSIS';
if pos(txttemp, Line) > 0 then
begin
valor := CadenaEntre(Line, txttemp, '<hr');
HTMLRemoveTags(valor);
SetField(fieldDescription, Trim(valor));
end
//lo ultimo la imagen
txttemp := '../../crt/';
posIni := pos(txttemp, LineImg);
if posIni <= 0 then
begin
txttemp := '../../fotos/';
posIni := pos(txttemp, LineImg);
end
if posIni > 0 then
begin
LineImg := copy(LineImg, posIni, Length(LineImg));
txttemp := 'jpg';
posIni := pos(txttemp, LineImg);
LineImg := copy(LineImg, 1, posIni + 2);
LineImg := EliminaInicio(Lineimg, '../..');
if LineImg <> '' then LineImg := 'http://' + Dominio + LineImg;
GetPicture(LineImg);
end
MoviePage.Free;
//DisplayResults;
end;
// bmicmic: Bucle Principal
begin
if CheckVersion(3,5,0) then
begin
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then MovieName := GetField(fieldTranslatedTitle);
Input('Importar de ' + Dominio + ' (por Google)', 'Introduce el Titulo de la Pelicula:', MovieName);
AnalyzePage(BaseURL1 + Dominio + BaseURL2 + UrlEncode(MovieName) + BaseURL3 + Dominio);
end else
ShowMessage('Este script necesita una versi≤n superior de Ant Movie Catalog (al menos la version 3.5.0)');
end.